#include <stdlib.h>
#include <stdio.h>
// 插入排序
void InsertSort(int* a, int n);

// 希尔排序
void ShellSort(int* a, int n);

// 选择排序
void SelectSort(int* a, int n);

// 堆排序
void AdjustDown(int* a, int n, int parent);
void HeapSort(int* a, int n);

// 冒泡排序
void BubbleSort(int* a, int n);

//三数取中 
int GetMidIndex(int* a,int begin,int end);
// 快速排序递归实现
// 快速排序hoare版本
int PartSort1(int* a, int begin, int end);

// 快速排序挖坑法
int PartSort2(int* a, int begin, int end);

// 快速排序前后指针法
int PartSort3(int* a, int begin, int end);
void QuickSort(int* a, int left, int right);

// 快速排序 非递归实现
void QuickSortNonR(int* a, int begin, int end);
void PrintArray(int* a, int n);
void Swap(int* a,int*b);